//package com.example.springbootrabbitmq.controller;
//
//import com.example.springbootrabbitmq.impl.MyCallBack;
//import lombok.extern.slf4j.Slf4j;
//import org.springframework.amqp.rabbit.connection.CorrelationData;
//import org.springframework.amqp.rabbit.core.RabbitTemplate;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.PathVariable;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.RestController;
//
//import javax.annotation.PostConstruct;
//
///**
// * @author 墨苍璃
// * @date 2022年09月19日21时13分
// * <p>
// * 发布确认 高级  生产者Controller
// */
//@RestController
//@RequestMapping("/confirm")
//@Slf4j
//public class ConfirmProducerController {
//
//    public static final String CONFIRM_EXCHANGE_NAME = "confirm.exchange";
//
//    @Autowired
//    private RabbitTemplate rabbitTemplate;
//
//    @Autowired
//    private MyCallBack myCallBack;
//
//
//    /**
//     * 依赖注入 rabbitTemplate 之后再设置它的回调对象
//     * <p>
//     * 到@PostConstruct注解 该注解的方法在整个Bean初始化中的执行顺序：
//     * <p>
//     * Constructor(构造方法) -> @Autowired(依赖注入) -> @PostConstruct(注释的方法)
//     */
//    @PostConstruct
//    public void init() {
//        rabbitTemplate.setConfirmCallback(myCallBack);
//
//        /**
//         * true： * 交换机无法将消息进行路由时，会将该消息返回给生产者
//         * false： * 如果发现消息无法进行路由，则直接丢弃
//         */
//        rabbitTemplate.setMandatory(true);
//        //设置回退消息交给谁处理
////        rabbitTemplate.setReturnCallback((RabbitTemplate.ReturnCallback) myCallBack);
//        rabbitTemplate.setReturnsCallback((RabbitTemplate.ReturnsCallback) myCallBack);
//    }
//
//
//    /**
//     * 发送消息
//     *
//     * @param message
//     */
//    @GetMapping("sendMessage/{message}")
//    public void sendMessage(@PathVariable String message) {
//        //指定消息 id 为 1
//        CorrelationData correlationData1 = new CorrelationData("1");
//        String routingKey = "key1";
//        //发送消息
//        rabbitTemplate.convertAndSend(CONFIRM_EXCHANGE_NAME, routingKey, message + routingKey, correlationData1);
//        CorrelationData correlationData2 = new CorrelationData("2");
//        routingKey = "key2";
//        //发送消息
//        rabbitTemplate.convertAndSend(CONFIRM_EXCHANGE_NAME, routingKey, message + routingKey, correlationData2);
//        log.info("发送消息内容:{}", message);
//    }
//
//
//}
